#! /bin/sh
# Copyright 1985,1988 Massacusetts Institute of Technology.
# $XConsortium: xdpr.script /main/10 1995/12/08 11:10:59 swick $
# origin: William Kucharski, Solbourne Computer, Inc. 3/24/90
#         translated from csh script xdpr.script "paul 4/12/88"

# initialize variables

display="$DISPLAY"
header=
bsdlprv=
lprv=
out=
svlprv=
trailer=
xprv=
xwdv=

usage="Usage: xdpr [filename] [-out filename ] \
[-display host:display] [[-Pprinter] | [-dprinter]] [-device devtype] \
[{-root | -id <id> | -name <name>}] [-nobdrs] [-xy] \
[-scale scale] [-height inches] [-width inches] [-left inches] \
[-top inches] [-split n] [-header string] [-trailer string] \
[-landscape] [-portrait] [-rv] [-compact] [-noff] [-frame] \
[-plane number] [-gray number] [-psfig] [-density dpi] \
[-cutoff level] [-noposition] [-gamma correction] [-render algorithm] \
[-slide] [-add value] [-help]"

# Guess if we are BSD or System V

if [ -x /usr/ucb/lpr -o -x /usr/bin/lpr -o -x /bin/lpr -o -x /usr/bsd/lpr ]
then
	LP=lpr
	BSD=1
elif [ -x /usr/bin/lp -o -x /bin/lp ]
then
	LP=lp
	BSD=0
else
	LP=lpr
	BSD=1
fi

# parse arguments...

while [ $1 ]; do
	case "$1" in

# ...arguments interpreted by xdpr itself...

	-help)
		echo $usage;
		exit 0;;

# ...arguments to xwd...

	-nobdrs|-root|-xy|-frame)
		xwdv="$xwdv $1";;
	-display)
		display=$2
		xwdv="$xwdv $1 $2";
		shift;;
	-id|-name)
		xwdv="$xwdv $1 $2";
		shift;;
	-out|-add)
		out=true
		xwdv="$xwdv $1 $2";
		shift;;

# ...arguments to xpr...

	-scale|-height|-width|-left|-top|-split|-device)
		xprv="$xprv $1 $2";
		shift;;
	-plane|-gray|-density|-cutoff|-gamma|-render)
		xprv="$xprv $1 $2";
		shift;;
	-header)
		shift;
		header="$1";;
	-trailer)
		shift;
		trailer="$1";;
	-landscape|-portrait|-rv|-compact|-noff|-psfig|-noposition|-slide)
		xprv="$xprv $1";;

# ...arguments to lp[r]...

	-P*|-#?*|-C?*|-J?*|-h|-m)
		bsdlprv="$lprv $1";;

	-d*|-H*|-q*|-n*|-o*|-w)
		svlprv="$svlprv $1";;

# ...disallow other arguments; print usage message

	-*)
		echo "xdpr: Unknown option $1";
		echo $usage;
		exit 1;;

# ...input filename...

	*)
		if [ ! "$infile" ]; then
			infile=true
			xprv="$xprv $1"
		else
			echo "xdpr: Invalid argument "$1""
			echo $usage
			exit 1
		fi
	esac
	shift
done

# quit if there is no DISPLAY specified

if [ ! "$display" ]; then
	echo "xdpr: DISPLAY variable must be set or a display specified."
	exit
fi

# Command lines:

# Set up lp[r] options...

if [ $BSD -eq 0 ]
then
	lprv=$svlprv
else
	lprv=$bsdlprv
fi

# disallow concurrent input and  -out arguments
if [ "$out" -a "$infile" ]; then
	echo "xdpr: -out <filename> cannot be used if an input file is also specified."
	exit 0
fi

# dump only
if [ "$out" ]; then
	if [ "$xprv" -o "$lprv" ]; then
		echo "xdpr: The following arguments will be ignored:"
		echo $xprv $lprv
	fi
	xwd $xwdv
	exit 0
fi

# print only
if [ "$infile" ]; then
	if [ "$xwdv" ]; then
		echo "xdpr: The following arguments will be ignored:"
		echo $xwdv
	fi
	xpr -header "$header" -trailer "$trailer" $xprv | $LP $lprv
	exit 0
fi

# dump & print (default)
xwd $xwdv | xpr -header "$header" -trailer "$trailer" $xprv | $LP $lprv
exit 0

# EOF
